/*
 * Copyright 2010 Nicholas Alexander Cross
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 	http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.intellij.lang.plist.parser;

import com.intellij.lang.Language;
import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.IFileElementType;
import com.intellij.psi.tree.TokenSet;
import org.intellij.lang.plist.PListLanguage;

import static com.intellij.psi.tree.TokenSet.create;

public interface PListElementTypes {

    public IFileElementType FILE = new IFileElementType(Language.findInstance(PListLanguage.class));

    public IElementType BAD_CHARACTER = TokenType.BAD_CHARACTER;
    public IElementType WHITE_SPACE = TokenType.WHITE_SPACE;

    public IElementType COMMENT = new PListElementType("COMMENT");

    public IElementType STRING = new PListElementType("STRING");
    public IElementType NUMBER = new PListElementType("NUMBER");
    public IElementType DICTIONARY_KEY = new PListElementType("KEY");

    public IElementType RIGHT_BRACE = new PListElementType("RIGHT_BRACE");
    public IElementType LEFT_BRACE = new PListElementType("LEFT_BRACE");
    public IElementType EQUALS = new PListElementType("EQUALS");
    public IElementType SEMI_COLON = new PListElementType("SEMI_COLON");

    public IElementType RIGHT_PARENTHESES = new PListElementType("RIGHT_PARENTHESES");
    public IElementType LEFT_PARENTHESES = new PListElementType("LEFT_PARENTHESES");
    public IElementType COMMA = new PListElementType("COMMA");

    public IElementType DICTIONARY = new PListElementType("DICTIONARY");
    public IElementType ARRAY = new PListElementType("ARRAY");
    public IElementType ARRAY_VALUE = new PListElementType("ARRAY_VALUE");
    public IElementType DICTIONARY_VALUE = new PListElementType("DICTIONARY_VALUE");

    TokenSet BLOCKS = create(DICTIONARY, ARRAY, ARRAY_VALUE, DICTIONARY_VALUE);
    TokenSet DICTIONARY_TOKENS = create(RIGHT_BRACE, LEFT_BRACE, EQUALS, SEMI_COLON);
    TokenSet ARRAY_TOKENS = create(LEFT_PARENTHESES, RIGHT_PARENTHESES, COMMA);
    TokenSet WHITE_SPACE_TOKENS = create(WHITE_SPACE);
    TokenSet COMMENT_TOKENS = create(COMMENT);
    TokenSet STRING_TOKENS = create(STRING);


}
